在 Zabbix 中,新增一 MediaType,使用 Webhook 方式來完成。
在 [Alerts] > [Media types] 中,點選 [Create media type]
設定 [Media type] 項目,Type 選擇 Webhook
,將 URL 設定為要通知的位置(通常是 Web 應用程式)
上圖中之 Script 區段,填入以下項目
var req = new HttpRequest();
var params = JSON.parse(value);
Zabbix.Log(127, "webhook request value=" + value);
url = params.URL;
// Send message to Webhook
req.addHeader('Content-Type: application/x-www-form-urlencoded');
resp = req.post(
url,
"message=" + params.Message
);
// Get Webhook status
Zabbix.Log(127, "response code: " + req.getStatus());
return JSON.stringify({ tags: { delivered: resp } });
@Desktop
安裝必要套件
root# dnf install -y httpd php php-fpm php-json
root# systemctl enable --now httpd
root# mkdir /var/www/html/uploads/
root# chown apache /var/www/html/uploads/
編輯通報程式,使用 PHP 完成
root# vi /var/www/html/recv.php
<?php
$timestamp = date("Y-m-d H:i:s");
$str = json_encode($_POST);
$finalStr = $timestamp . "\t" . $str . "\n";
file_put_contents("./uploads/message.txt", $finalStr, FILE_APPEND);
?>
@Zabbix
在 Media type 中,點選 class_webhook
後方的 [Test],執行 [Test]
@Desktop
使用 Firefox 查看檔案
Firefox: http://desktopX/uploads/message.txt